/** ==================================================================================== **/
/** 	 Property utili alla gestione della mappa di openlayers 3 (NON MODIFICABILI) 	 **/
/** ==================================================================================== **/


/**
 * Costanti necessarie per il build della mappa e componenti
 * @enum {Object}
 */
ol.ApplicationProperty = {
    
    /** Bing Maps API key **/
    BING_MAPS_KEY: "AoeRWENsPBc91WpUNrIVyOlmN9-5WRuBRxIt-hUQH-kKrzic7A_awtJq2E4GmRZB",
    
    /** Nome del layer per la visuallizazione su mappa della feature della geolocalizzazione **/
    NAME_LAYER_GEOLOCATION: "l_geolocate_user",
    /** Nome del layer per la visualizzazione su mappa della feature prodotte dagli strumenti di edit della mappa **/
    NAME_LAYER_DRAW_FEATURE: "l_draw_feature",
    /** Nome del layer per la visualizzazione su mappa della feature prodotte dal cerca indirizzo (geocoder) **/
    NAME_LAYER_GEOCODER_INDIRIZZO: "l_geocoder_indirizzo",
    /** Nome del layer per la visualizzazione su mappa della feature prodotte dal cerca lon lat. **/
    NAME_LAYER_GEO_LONLAT: "l_geo_lonlat",
    /** Nome del layer per la visualizzazione su mappa della feature prodotte dal cerca indirizzo (fermate) **/
    NAME_LAYER_GEOCODER_FERMATE: "l_geocoder_fermate",
    
    /** Id dello strumento per il disegno di punti, linee e poligoni su mappa **/
    ID_INTERACTION_DRAW_FEATURE: "id_draw_feature",
    /** Id dello strumento per la modifica di punti, linee e poligoni su mappa **/
    ID_INTERACTION_MODIFY_FEATURE: "id_modify_feature",
    /** Id dello strumento per la selezione della feature da modificare **/
    ID_INTERACTION_SELECT_MODIFY_FEATURE: "id_select_modify_feature",
    
    /** Id della feature creata per segnalare la localizzazione di una coppia di coordinate. **/
    ID_FEATURE_GEO_LONLAT: "id_geo_lonlat",
    /** Id della feature creata per segnalare la localizzazione di un indirizzo. **/
    ID_FEATURE_GEO_INDIRIZZO: "id_geo_indirizzo",
    /** Id della feature creata per segnalare la localizzazione di un indirizzo. **/
    ID_FEATURE_GEO_FERMATA: "id_geo_fermata",
    
    /** Identificativo del profilo da usare per recuperare le informazioni per costruire la mappa(albero, controlli, ecc..) */
    ID_PROFILO: 1,
    /** Url che restituisce il json delle configurazioni impostate per il profilo **/
    URL_CONFIGURAZIONI_PROFILO: "profilo/findConfigurationProfileById.json",
    
    /**
     * La dimensione in pixels della mappa nel DOM. 
     * {Array[width, height]}.
     */
    SIZE_MAP: [500, 500]
};


/********************************************************/
/*                                                      */
/*          Elenco property extended class ol	        */
/*                                                      */
/********************************************************/  

/**
 * Extended property ol.Geolocation
 * @enum {string}
 */
ol.ExtGeolocationProperty = {
	MAP: "map"
}

/**
 * Extended property ol.layer.Base
 * @enum {string}
 */
ol.ExtLayerBaseProperty = {
	ID: "id", 
	NAME: "name"
}

/**
 * Extended property ol.control.Control
 * @enum {string}
 */
ol.ExtControlProperty = {
	ID: "id", 
	NAME: "name"
}

/**
 * Extended property ol.interaction.Interaction
 * @enum {string}
 */
ol.ExtInteractionProperty = {
	ID: "id", 
	NAME: "name"
}

/**
 * Extended property ol.Overlay
 * @enum {string}
 */
ol.ExtOverlayProperty = {
  ID: 'id'
};

/**
 * Extended property Map
 * @enum {string}
 */
ol.ExtMapProperty = {
   OPTIONS: "customOptions"
};

/**
 * Tipologie di geometrie che gli strumenti di edit della mappa gestiscono.
 * 
 * @enum {string}
 */
ol.interaction.GeometryType = {
   POINT: 'Point',
   LINE_STRING: 'LineString',
   POLYGON: 'Polygon',
   CIRCLE: 'Circle'
};

/**
 * The geometry type: 
 *  'Point', 'LineString', 'Polygon', 'MultiPoint', 'MultiLineString', 'MultiPolygon'.
 * @enum {string}
 */
ol.geom.GeometryType = {
	POINT: 'Point',
	LINE_STRING: 'LineString',
	POLYGON: 'Polygon',
	MULTI_POINT: 'MultiPoint',
	MULTI_LINE_STRING: 'MultiLineString',
	MULTI_POLYGON: 'MultiPolygon'
};

/**
 * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')
 * or measure ('M') coordinate is available. 
 * Supported values are 'XY', 'XYZ', 'XYM', 'XYZM'.
 * @enum {string}
 */
ol.geom.GeometryLayout = {
	XY: 'XY',
	XYZ: 'XYZ',
	XYM: 'XYM',
	XYZM: 'XYZM'
};


/**
 * Tipologia layer oggetto
 * 
 * @enum {string}
 */
ol.LayerType = {
	/** Layer vettoriale */
	VECTOR: "VECTOR",
	/** Source for WMS servers providing single, untiled images. */
	IMAGE_WMS: "IMAGE_WMS",
	/** Layer source for tile data from WMS servers. */
	TILE_WMS: "TILE_WMS"
};